package com.duniptech.engine.core.modeling.api;

import java.util.Set;

/**
 * Class that implement an atomic model with an interface to define states.
 * The name of the state must be unique in the atomic model. It is not necessary
 * that other atomic models use different names for their states.
 * @author Jos� L. Risco-Mart�n.
 *
 */
public interface IAtomicState extends IAtomic {
	/**
	 * Adds a state into the states has map.
	 * @param name name of the state.
	 */
	void addState(String name);
	/**
	 * Returns the set of states stored in this model.
	 * @return The set of states.
	 */
	Set<String> getStates();
	/**
	 * Gets a state value from the map of states.
	 * @param name name of the state.
	 * @return the value of the state.
	 */
	Number getStateValue(String name);
	
	/**
	 * Sets a state value to the map of states.
	 * @param name The name of the state.
	 * @param value The new value of the state.
	 */
	void setStateValue(String name, Number value);
}
